#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL_mixer.h>
#include "jouer1.h"


typedef struct
{
    int x,y;

} Cases;



int main ( int argc, char** argv )
{

    const int MAX = 6, MIN = 1;
     Cases t[63];
    int n ;

    for ( t[0].x=90,t[0].y=420,n=1; n<=7; n++)
    {
        t[n].x=t[n-1].x+40;
        t[n].y=t[n-1].y;
    }
    t[8].x=474;
    t[8].y=419;
    t[9].x=518;
    t[9].y=398;
    t[10].x=581;
    t[10].y=337;
    t[11].x=582;
    t[11].y=338;
    t[12].x=601;
    t[12].y=303;
    t[13].x=611;
    t[13].y=265;
    t[14].x=613;
    t[14].y=220;
    t[15].x=604;
    t[15].y=173;
    t[16].x=586;
    t[16].y=140;
    t[17].x=563;
    t[17].y=105;
    t[18].x=526;
    t[18].y=69;
    t[19].x=469;
    t[19].y=46;
    for ( t[20].x=420,t[20].y=43,n=21; n<=25; n++)
    {
        t[n].x=t[n-1].x-40;
        t[n].y=t[n-1].y;
    }
    t[26].x=178;
    t[26].y=46;
    t[27].x=134;
    t[27].y=60;
    t[28].x=106;
    t[28].y=86;
    t[29].x=80;
    t[29].y=115;
    t[30].x=64;
    t[30].y=147;
    t[31].x=56;
    t[31].y=186;
    t[32].x=59;
    t[32].y=232;
    t[33].x=70;
    t[33].y=268;
    t[34].x=82;
    t[34].y=305;
    t[35].x=111;
    t[35].y=330;
    t[36].x=145;
    t[36].y=351;

    for ( t[37].x=186,t[37].y=363,n=38; n<=43; n++)
    {
        t[n].x=t[n-1].x+40;
        t[n].y=t[n-1].y;
    }
    t[44].x=472;
    t[44].y=351;
    t[45].x=512;
    t[45].y=323;
    t[46].x=539;
    t[46].y=283;
    t[47].x=549;
    t[47].y=248;
    t[48].x=552;
    t[48].y=207;
    t[49].x=535;
    t[49].y=174;
    t[50].x=507;
    t[50].y=130;
    t[51].x=463;
    t[51].y=109;

    for ( t[52].x=404,t[52].y=103,n=53; n<=56; n++)
    {
        t[n].x=t[n-1].x-50;
        t[n].y=t[n-1].y;
    }
    t[57].x=178;
    t[57].y=112;
    t[58].x=131;
    t[58].y=145;
    t[59].x=118;
    t[59].y=210;
    t[60].x=132;
    t[60].y=247;
    t[61].x=151;
    t[61].y=274;
    t[62].x=186;
    t[62].y=294;
    t[63].x=243;
    t[63].y=296;
    int accueil=0;
    int aide1=0;
    int aide2=0;
    int aide3=0;
    int option=0;
    int jouer=0;
    int son=1;
    int done;
   int e;
    int d;
    int tour=0;
    int jouerDe;
    int i;
    int De=0;
    int j1=0;
    int j2=0;
    int d0=0;
    int d1=0;
    int j11=0;
    int j22=0;
    SDL_Event event;
    SDL_Event event1;
    SDL_Event event2;
    SDL_Event event3;
    SDL_Event event4;
    SDL_Event event5;
    SDL_Event event1a;
    SDL_Surface* screen;
    SDL_Surface* bmpAccueil;
    SDL_Surface* bmpAid1;
    SDL_Surface* bmpAid2;
    SDL_Surface* bmpAid3;
    SDL_Surface* bmpOption;
     SDL_Surface* bmpJouer;
    SDL_Surface*  BarreSon;
    SDL_Surface* joueur1;
    SDL_Surface* joueur2;

     Mix_Music *musique;











    freopen("CON","w",stdout);
    freopen("CON","r",stdin);



    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )

    {
        printf( "Unable to init SDL: %s\n", SDL_GetError() );
        return 1;
    }


     screen = SDL_SetVideoMode(750, 550, 16,
                                           SDL_HWSURFACE|SDL_DOUBLEBUF);

     bmpAid1 = SDL_LoadBMP("h1.bmp");
   SDL_Rect dstrectAide1;
    dstrectAide1.x = (screen->w - bmpAid1->w) / 2;
    dstrectAide1.y = (screen->h - bmpAid1->h) / 2;
bmpAid2 = SDL_LoadBMP("h2.bmp");
SDL_Rect dstrectAid2;
    dstrectAid2.x = (screen->w - bmpAid2->w) / 2;
    dstrectAid2.y = (screen->h - bmpAid2->h) / 2;

     bmpAid3 = SDL_LoadBMP("h3.bmp");
   SDL_Rect dstrectAid3;
    dstrectAid3.x = (screen->w - bmpAid3->w) / 2;
    dstrectAid3.y = (screen->h - bmpAid3->h) / 2;

    bmpOption = SDL_LoadBMP("option.bmp");
SDL_Rect dstrectOption;
    dstrectOption.x = (screen->w - bmpOption->w) / 2;
    dstrectOption.y = (screen->h - bmpOption->h) / 2;

       BarreSon = IMG_Load("BarreSon.png");
SDL_Rect positionBarreSon;
    positionBarreSon.x =(screen->w - BarreSon->w) / 2;
    positionBarreSon.y = (screen->h - BarreSon->h) / 2;

     bmpJouer = IMG_Load("apE1.bmp");
    SDL_Rect dstrectJouer;
    dstrectJouer.x = (screen->w - bmpJouer->w) / 2;
    dstrectJouer.y = (screen->h - bmpJouer->h) / 2;

     joueur1 = IMG_Load("j1.png");
SDL_Rect positionjoueur1;
    positionjoueur1.x = 50;
    positionjoueur1.y = 700;
     joueur2 = IMG_Load("j2.png");
SDL_Rect positionjoueur2;
    positionjoueur2.x = 20;
    positionjoueur2.y = 450;



     bmpAccueil = SDL_LoadBMP("acc.bmp");
    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
    SDL_Rect dstrectAccueil;
    dstrectAccueil.x = (screen->w - bmpAccueil->w) / 2;
    dstrectAccueil.y = (screen->h - bmpAccueil->h) / 2;
    SDL_BlitSurface(bmpAccueil, 0, screen, &dstrectAccueil);


    SDL_Flip(screen);
    accueil=1;
    done=1;

    while(done)
    {
         if(accueil==1)
       {
           while(SDL_PollEvent(&event))
        {
            switch(event.type)
            {
            case SDL_MOUSEBUTTONDOWN:
            {
                int x=event.motion.x;
                int y=event.motion.y;

                 if (x<=749 && x>=344 && y<=400 && y>=267)
                {option=1;
                jouer=0;
                aide1=0;
                accueil=0;


                SDL_BlitSurface(bmpOption, 0, screen, &dstrectOption);
                SDL_Flip(screen);
                }

                 if(x<640 && x>323 && y<136 && y>40)
                {aide1=1;
                jouer=0;
                accueil=0;
                option=0;
                aide1=1;
                aide2=0;
                aide3=0;

                SDL_BlitSurface(bmpAid1, 0, screen, &dstrectAide1);
                SDL_Flip(screen);

                }
                if (x<640 && x>281 && y<229 && y>136)
                {   jouer=1;
                    aide1=0;
                    accueil=0;
                    option=0;

bmpJouer = IMG_Load("apE1.bmp");
    SDL_Rect dstrectJouer;
    dstrectJouer.x = (screen->w - bmpJouer->w) / 2;
    dstrectJouer.y = (screen->h - bmpJouer->h) / 2;
                    SDL_BlitSurface(bmpJouer, 0, screen, &dstrectJouer);
                    joueur1 = IMG_Load("j1.png");
                      SDL_Rect positionjoueur1;
                      positionjoueur1.x = 100;
                      positionjoueur1.y = 450;
                    SDL_BlitSurface(joueur1, NULL, screen, &positionjoueur1);
                    SDL_Flip(screen);
                    joueur2 = IMG_Load("j2.png");
                    SDL_Rect positionjoueur2;
                     positionjoueur2.x = 20;
                     positionjoueur2.y = 450;
                    SDL_BlitSurface(joueur2, NULL, screen, &positionjoueur2);
                    SDL_Flip(screen);
                }
                if (x<=745 && x>=318 && y<=525 && y>=399)
                    {done=0;
                    jouer=0;
                    aide1=0;
                    accueil=0;
                    option=0;}

                break;}

            case SDL_QUIT:
                { accueil=0;
                aide1=0;
                jouer=0;
                option=0;
                done=0;
                break;}

                case SDL_KEYDOWN:
                    {
                        switch (event.key.keysym.sym)
                              {
                                case SDLK_ESCAPE:
                                  done = 0;
                                break;
                            }
                break;

                    }
            }
        }
    }


    if(accueil==0 && aide1==1 && option==0 && jouer==0)
    {

                        while(SDL_PollEvent(&event))
                        {
                            switch(event.type)
                            {
                            case SDL_KEYDOWN:
                            {

                                if(event.key.keysym.sym == SDLK_RIGHT)
                                {
                                    aide2=1;
                                    aide1=0;
                                    aide3=0;
                                    option=0;
                                    jouer=0;
                                    accueil=0;
                                    bmpAid2 = SDL_LoadBMP("h2.bmp");


                                    SDL_BlitSurface(bmpAid2, 0, screen, &dstrectAid2);
                                    SDL_Flip(screen);
                                }
                                if(event.key.keysym.sym == SDLK_LEFT || event.key.keysym.sym==SDLK_ESCAPE)
                                {
                                    aide2=0;
                                    aide1=1;
                                    aide3=3;
                                    option=0;
                                    jouer=0;
                                    accueil=1;
                                    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
                                    SDL_BlitSurface(bmpAccueil, 0, screen, &dstrectAccueil);
                                    SDL_Flip(screen);
                                }

                                break;}
                            case SDL_QUIT :
                                done=0;
                                break;


    }
    }
    }
    else if (accueil==0 && aide1==0 && aide2==1 && aide3==0 && option==0 && jouer==0)
    {
        while(SDL_PollEvent(&event2))
                        {
                            switch(event2.type)
                            {
                            case SDL_KEYDOWN:
                            {

                                if(event2.key.keysym.sym == SDLK_RIGHT)
                                {
                                    aide2=0;
                                    aide1=0;
                                    aide3=1;
                                    option=0;
                                    jouer=0;
                                    accueil=0;
                                    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
                                    SDL_BlitSurface(bmpAid3, 0, screen, &dstrectAid2);
                                    SDL_Flip(screen);
                                }
                                if(event1.key.keysym.sym == SDLK_LEFT || event.key.keysym.sym==SDLK_ESCAPE )
                                {
                                    aide2=1;
                                    aide1=0;
                                    aide3=0;
                                    option=0;
                                    jouer=0;
                                    accueil=0;
                                    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
                                    SDL_BlitSurface(bmpAid2, 0, screen, &dstrectAid2);
                                    SDL_Flip(screen);
                                }

                                break;}
                            case SDL_QUIT :
                                done=0;
                                break;

    }
    }
    }
    else if (accueil==0 && aide1==0 && aide2==0 && aide3==1 && option==0 && jouer==0)
    {
        while(SDL_PollEvent(&event3))
                        {
                            switch(event3.type)
                            {
                            case SDL_KEYDOWN:
                            {

                                if(event3.key.keysym.sym == SDLK_RIGHT || event.key.keysym.sym==SDLK_ESCAPE)
                                {
                                    aide2=0;
                                    aide1=0;
                                    aide3=0;
                                    option=0;
                                    jouer=0;
                                    accueil=1;
                                    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
                                    SDL_BlitSurface(bmpAccueil, 0, screen, &dstrectAccueil);
                                    SDL_Flip(screen);
                                }
                                if(event3.key.keysym.sym == SDLK_LEFT)
                                {
                                    aide2=1;
                                    aide1=0;
                                    aide3=0;
                                    option=0;
                                    jouer=0;
                                    accueil=0;
                                    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
                                    SDL_BlitSurface(bmpAid2, 0, screen, &dstrectAid2);
                                    SDL_Flip(screen);
                                }


                                break;}
                            case SDL_QUIT :
                                done=0;
                                break;

    }
    }
    }
    else if (accueil==0 && aide1==0 && aide2==0 && aide3==0 && option==1 && jouer==0)
    {
      while(SDL_PollEvent(&event))
                        {
                            switch(event.type)
                            {
                            case SDL_MOUSEBUTTONDOWN:
                            {int x=event.motion.x;
                             int y=event.motion.y;

                 if (x<=375 && x>=275 && y<=375 && y>=275)

                                {if(son==1)
                                {
                                    aide2=0;
                                    aide1=0;
                                    aide3=0;
                                    option=1;
                                    jouer=0;
                                    accueil=0;
BarreSon = IMG_Load("BarreSon.png");
SDL_Rect positionBarreSon;
    positionBarreSon.x =(screen->w - BarreSon->w) / 2;
    positionBarreSon.y = (screen->h - BarreSon->h) / 2;
                                   SDL_BlitSurface(BarreSon, NULL, screen, &positionBarreSon);
                                   SDL_Flip(screen);
                                   son=0;
                                }
                                if(son==0)
                                {
                                    aide2=0;
                                    aide1=0;
                                    aide3=0;
                                    option=1;
                                    jouer=0;
                                    accueil=0;

                                    SDL_BlitSurface(bmpOption, 0, screen, &dstrectOption);
                                    SDL_Flip(screen);
                                }}
                                break;}
                            case SDL_QUIT :
                                done=0;
                                break;
                            case SDL_KEYDOWN:
                    {
                        switch (event.key.keysym.sym)
                              {
                                case SDLK_ESCAPE:
                                  accueil=1;
                                  aide2=0;
                                  aide1=0;
                                  aide3=0;
                                  option=0;
                                  jouer=0;

                                  SDL_BlitSurface(bmpAccueil, 0, screen, &dstrectAccueil);
                                  SDL_Flip(screen);
                                break;
                            }
                break;

                    }
    }
    }
    }

    if(accueil==0 && aide1==0 && aide2==0 && aide3==0 && option==0 && jouer==1)
    {
         SDL_BlitSurface(bmpJouer, 0, screen, &dstrectJouer);


                    SDL_BlitSurface(joueur1, NULL, screen, &positionjoueur1);



                    SDL_BlitSurface(joueur2, NULL, screen, &positionjoueur2);
                    SDL_Flip(screen);
    while(SDL_PollEvent(&event))
                        {
                            switch(event.type)
                            {
                            case SDL_MOUSEBUTTONDOWN:
                            {int x=event.motion.x;
                             int y=event.motion.y;

                             if (x<=749 && x>=344 && y<=400 && y>=267)
                                   {
                                     De=1;

                                     if(j1!=63 && j2!=63)
                                    {
                i=0;
                e=0;
                d=0;
                d0=0;
                d1=0;
                 tour=1;
                     do
                    {j11=j1;
                   d0=deCube();
                   d1=deCube();
                   j1=CasesJouer(d0,d1,j1);
                   i++;

                    if(j1==63)
                    {
                        e=d;
                    }
                    else if(j2==j1)
                    {j1=j22;
                    e=d;}
                    else if(j2==19&& i<=2)
                    {
                        e=i;
                        d=2;
                    }
                    else if(j2==31)
                    {
                        e=j1;
                        d=31;
                    }
                    else
                    {
                        e=i;
                        d=1;
                    }
                    }while (tour==1 && De==1 && e!=d);

                          printf("j1=%d\n",j1);


                 positionjoueur1.x = t[j1].x;
                 positionjoueur1.y = t[j1].y;

                tour=2;
                i=0;
                e=0;
                d=0;
                d0=0;
                d1=0;

                if(j1!=63)
                {
                    do
                    {j22=j2;
                    d1=deCube();
                    d0=deCube();

                    j2=CasesJouer(d0,d1,j2);
                    printf("j2'=%d",j2);
                    i++;
                    if(j2==j1)
                    {j2=j11;
                    e=d;}

                    else if(j2==63)
                    {e=d;}
                    else if (j1==19 && i<=2)
                         {d=2;
                         e=i;}
                    else if (j1==31)
                         {e=j2;
                         d=31;}
                         else
                         { e=i;
                           d=1;}

                }while(tour==2 && De==1 && e!=d);
                tour=1;

                 positionjoueur2.x = t[j2].x;
                 positionjoueur2.y = t[j2].y;}}}

                     De=0;

                                break;}
                            case SDL_QUIT :
                                done=0;
                                break;
                            case SDL_KEYDOWN:
                    {
                        if(event.key.keysym.sym==SDLK_ESCAPE)
                              {


                                  accueil=1;
                                  aide2=0;
                                  aide1=0;
                                  aide3=0;
                                  option=0;
                                  jouer=0;

                                  SDL_BlitSurface(bmpAccueil, 0, screen, &dstrectAccueil);
                                  SDL_Flip(screen);

                            }
                break;

                    }
    }}
 SDL_BlitSurface(bmpJouer, 0, screen, &dstrectJouer);
    SDL_BlitSurface(joueur1, NULL, screen, &positionjoueur1);
     SDL_BlitSurface(joueur2, NULL, screen, &positionjoueur2);


SDL_Flip(screen);
    }
if(j1==63)
     {
         jouer=0;
     SDL_Surface*  bmpGameOver1 = SDL_LoadBMP("gameOver1.bmp");
SDL_Rect dstrectGameOver1;
    dstrectGameOver1.x = (screen->w - bmpGameOver1->w) / 2;
    dstrectGameOver1.y = (screen->h - bmpGameOver1->h) / 2;
    SDL_BlitSurface(bmpGameOver1, NULL, screen, &dstrectGameOver1);
    SDL_Flip(screen);

     }
     else if (j2==63)
     {
      jouer=0;
     SDL_Surface*  bmpGameOver2 = SDL_LoadBMP("gameOver2.bmp");
SDL_Rect dstrectGameOver2;
    dstrectGameOver2.x = (screen->w - bmpGameOver2->w) / 2;
    dstrectGameOver2.y = (screen->h - bmpGameOver2->h) / 2;
    SDL_BlitSurface(bmpGameOver2, NULL, screen, &dstrectGameOver2);
    SDL_Flip(screen);

     }
    }
    return 0;
}



